package www.bancodelanacion.intranet.prestamos.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


import www.bancodelanacion.intranet.prestamos.entidad.PlazaDTO;
import www.bancodelanacion.intranet.prestamos.entidad.RefinanciamientoDTO;
import www.bancodelanacion.intranet.prestamos.util.MySqlDBConn;


public class RefinanciamientoDAOImpl implements RefinanciamientoDAO{

	@Override
	public int insertaRefinanciamiento(RefinanciamientoDTO bean)throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		try {
			conn = new MySqlDBConn().getConnection();
			String sql="insert into tb_refinanciamiento_de_credito values(?,?,?,?,?,?,?,?,?,?,?) ";
			pstm = conn.prepareStatement(sql);
			pstm.setString(1, bean.getCodigorefinanciamiento());
			pstm.setString(2, bean.getFecha());
			pstm.setString(3, bean.getMontorefinanciamiento());
			pstm.setString(4, bean.getPagomensualrefinanciamiento());
			pstm.setString(5, bean.getCuotarefinanciamiento());
			pstm.setString(6, bean.getFechainiciorefinanciamiento());
			pstm.setString(7, bean.getFechafinrefinanciamiento());
			pstm.setString(8, bean.getTasaointeresrefinanciamiento());
			pstm.setString(9, bean.getCodigocliente());
			pstm.setString(10, bean.getCodigoestado());
			pstm.setString(11, bean.getCodigotrabajador());
			
			
			return pstm.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return -1;
	}

	@Override
	public int actualizaRefinanciamiento(RefinanciamientoDTO refinanciamiento) throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		try {
			conn = new MySqlDBConn().getConnection();
			String sql ="update tb_refinanciamiento_de_credito set " +
			"Monto_Refinanciamiento=?, Cuota_Refinanciamiento=?," +
			"Fecha_Inicio_Refinanciamiento=?, Fecha_Fin_Refinanciamiento=?, Tasa_O_Interes_Refinanciamiento=?, Pago_Mensual_Refinanciamiento=?, Codigo_Estado=? where Codigo_Refinanciamiento=?";
			pstm = conn.prepareStatement(sql);
			
			//fecha
			
			pstm.setString(1, refinanciamiento.getMontorefinanciamiento());
			pstm.setString(2, refinanciamiento.getCuotarefinanciamiento());
			//estado
			pstm.setString(3, refinanciamiento.getFechainiciorefinanciamiento());
			pstm.setString(4, refinanciamiento.getFechafinrefinanciamiento());
			pstm.setString(5, refinanciamiento.getTasaointeresrefinanciamiento());
			pstm.setString(6, refinanciamiento.getPagomensualrefinanciamiento());
			pstm.setString(7, refinanciamiento.getCodigoestado());
			pstm.setString(8, refinanciamiento.getCodigorefinanciamiento());
			
			
			
			
		
			return pstm.executeUpdate();
			
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return -1;
	}

	

	@Override
	public ArrayList<RefinanciamientoDTO> listaRefinanciamiento() throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ArrayList<RefinanciamientoDTO> data = new ArrayList<RefinanciamientoDTO>();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select * from tb_refinanciamineto_de_credito";
				pstm = conn.prepareStatement(sql);
				rs = pstm.executeQuery();
				RefinanciamientoDTO dto = null;
				while(rs.next()){
					dto = new RefinanciamientoDTO();
					dto.setFecha(rs.getString("Fecha"));
					dto.setMontorefinanciamiento(rs.getString("Monto_Refinanciamiento"));
					dto.setPagomensualrefinanciamiento(rs.getString("Pago_Mensual_Refinanciamiento"));
					dto.setCuotarefinanciamiento(rs.getString("Cuota_Refinanciamiento"));
					dto.setFechainiciorefinanciamiento(rs.getString("Fecha_Inicio_Refinanciamiento"));
					dto.setFechafinrefinanciamiento(rs.getString("Fecha_Fin_Refinanciamiento"));
					dto.setTasaointeresrefinanciamiento(rs.getString("Tasa_O_Interes_Refinanciamiento"));
					dto.setCodigocliente(rs.getString("Codigo_Cliente"));
					dto.setCodigoestado(rs.getString("Codigo_Estado"));
					dto.setCodigotrabajador(rs.getString("Codigo_Trabajador"));
					data.add(dto);
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return data;
	}
	

	@Override
	public ArrayList<RefinanciamientoDTO> buscarRefinanciamientoDAO(
			String codigo,String fecha,String estado,String cliente)
			throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		ArrayList<RefinanciamientoDTO> data = new ArrayList<RefinanciamientoDTO>();
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select r.Codigo_Refinanciamiento,r.Codigo_Cliente,r.Cuota_Refinanciamiento," +
						"r.Fecha_Inicio_Refinanciamiento,r.Fecha_Fin_Refinanciamiento," +
						"r.Tasa_O_Interes_Refinanciamiento,r.Pago_Mensual_Refinanciamiento,e.Tipo " +
						"from bdbancodelanacion.tb_refinanciamiento_de_credito r inner join bdbancodelanacion.tb_estado e " +
						"on r.Codigo_Estado=e.Codigo_Estado inner join bdbancodelanacion.tb_cliente c " +
						"on r.Codigo_Cliente=c.Codigo_Cliente " +
						"where  Codigo_Refinanciamiento like ?  or Fecha like ?   or r.Codigo_Estado like ? or c.Razon_Social like ?";
				pstm = conn.prepareStatement(sql);
				pstm.setString(1, codigo);
				pstm.setString(2, fecha);
				pstm.setString(3, estado);
				pstm.setString(4, cliente);
				rs = pstm.executeQuery();
				RefinanciamientoDTO r = null;
				while(rs.next()){
					r = new RefinanciamientoDTO();
					r.setCodigorefinanciamiento(rs.getString("r.Codigo_Refinanciamiento"));
					r.setCodigocliente(rs.getString("r.Codigo_Cliente"));
					r.setCuotarefinanciamiento(rs.getString("r.Cuota_Refinanciamiento"));
					r.setFechainiciorefinanciamiento(rs.getString("r.Fecha_Inicio_Refinanciamiento"));
					r.setFechafinrefinanciamiento(rs.getString("r.Fecha_Fin_Refinanciamiento"));
					r.setTasaointeresrefinanciamiento(rs.getString("r.Tasa_O_Interes_Refinanciamiento"));
					r.setPagomensualrefinanciamiento(rs.getString("r.Pago_Mensual_Refinanciamiento"));
					r.setDescripcion(rs.getString("e.Tipo"));
					data.add(r);
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return data;
	}

	@Override
	public RefinanciamientoDTO obtenerRefinanciamientoDAO(String codigo)
			throws SQLException {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
		RefinanciamientoDTO  r = new RefinanciamientoDTO();
		try {
			conn = new MySqlDBConn().getConnection();
			String sql ="select  * from bdbancodelanacion.tb_refinanciamiento_de_credito r inner join bdbancodelanacion.tb_estado e " +
					"on r.Codigo_Estado=e.Codigo_Estado inner join bdbancodelanacion.tb_cliente c on r.Codigo_Cliente=c.Codigo_Cliente " +
					"inner join bdbancodelanacion.tb_trabajador t on r.Codigo_Trabajador=t.Codigo_Trabajador " +
					"where  Codigo_Refinanciamiento like ?";
			pstm = conn.prepareStatement(sql);
			pstm.setString(1, codigo);
			rs = pstm.executeQuery();
			if(rs.next()){
				r.setCodigorefinanciamiento(rs.getString("r.Codigo_Refinanciamiento"));
				r.setFecha(rs.getString("r.Fecha"));
				r.setCodigotrabajador(rs.getString("t.Codigo_Trabajador"));
				r.setNombre(rs.getString("t.Nombre"));
				r.setApellido(rs.getString("t.Apellido"));
				r.setIdarea(rs.getString("t.Cargo"));
				r.setCodigocliente(rs.getString("r.Codigo_Cliente"));
				r.setRazonsocial(rs.getString("c.Razon_Social"));
				r.setDireccion(rs.getString("c.Direccion"));
				r.setRuc(rs.getString("c.Ruc"));
				r.setFax(rs.getString("c.Fax"));
				r.setPaginaweb(rs.getString("c.Pagina_Web"));
				r.setCorreo(rs.getString("c.Correo"));
				r.setCuotarefinanciamiento(rs.getString("r.Cuota_Refinanciamiento"));
				r.setFechainiciorefinanciamiento(rs.getString("r.Fecha_Inicio_Refinanciamiento"));
				r.setFechafinrefinanciamiento(rs.getString("r.Fecha_Fin_Refinanciamiento"));
				r.setMontorefinanciamiento(rs.getString("r.Monto_Refinanciamiento"));
				
				r.setTasaointeresrefinanciamiento(rs.getString("r.Tasa_O_Interes_Refinanciamiento"));
				r.setPagomensualrefinanciamiento(rs.getString("r.Pago_Mensual_Refinanciamiento"));
				r.setDescripcion(rs.getString("e.Tipo"));
				
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return r;
	}

	@Override
	public String codigogen() {
		Connection conn = null;
		PreparedStatement pstm = null;
		ResultSet rs = null;
	
		int i=0;
		String cadena="";
		int n=0;
		try {
				conn = new MySqlDBConn().getConnection();
				String sql ="select count(Codigo_Refinanciamiento) as cantidad   from tb_refinanciamiento_de_credito ";
				pstm = conn.prepareStatement(sql);
				rs = pstm.executeQuery();
				
				while(rs.next()){
					i=rs.getInt("cantidad");
					System.out.println(i);
					if(i==0){
						System.out.println("primero");
						i=1;
						cadena="REF0"+i;
						return cadena;
						
					}else{
						System.out.println("siguiente"+i);
						
						i++;
						
						cadena="REF0"+i;
						return cadena;
					}
				}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if(rs!= null)rs.close();
				if(pstm!= null)pstm.close();
				if(conn!= null)conn.close();
			} catch (Exception e2) {}
		}
		return cadena;
	}

	

	
	
}
